home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
ysmaze
/
ysmaze.h
< prev
next >
Wrap
Text File
|
1993-07-08
|
2KB
|
68 lines
/*
Maze Format
short int *mazeDat;
1
┌────
│
2│ 3
│
mazeDat[n];
16 8 7 6 5 4 2 0
|XXXXXXXX|X|X|X|X|XX|XX|
│ ││││ │└ 壁1形状 00:無 01:壁 10:扉 11:リザーブ
│ ││││ └─ 壁2形状 00:無 01:壁 10:扉 11:リザーブ
│ │││└─── 壁1通過 0:可能 1:不可
│ ││└──── 壁2通過 0:可能 1:不可
│ │└───── 床のプリント 1:有 2:無
│ └────── 天井のプリント 1:有 2:無
└──────── プログラマー使用可(イベント用)
*/
struct mazeStyle {
int bl; /* 1ブロック分の壁の長さ(cm) */
int bh; /* 壁の高さ (cm) */
int lx,ly; /* 迷路のブロック数(東西,南北) */
};
struct mazeScreen {
int cx,cy; /* 画面中心 */
int x0,y0,x1,y1; /* 画面描画範囲 */
int wc,dc; /* 壁の色,ドアの色 */
int cont; /* コントラスト(輝度の距離1mに対する減衰率(%)) */
int mag; /* 拡大率 */
};
#define YSC_mazeFloorCeiling(mz,dat,bx,by) ((mzdat[by*((*mz).lx)+bx]/64)&3)
#define YSC_mazeFloorNumber(mz,dat,bx,by) ((mzdat[by*((*mz).lx)+bx]/256)&255)
/* wall.c */
int YSC_mazeWall(struct mazeStyle *mz,short int *mzdat,int bx,int by,int dir);
int YSC_mazePass(struct mazeStyle *mz,short int *mzdat,int bx,int by,int dir);
/* drawmaze.c */
void YSC_mazeGetLines(struct mazeStyle *mz,struct mazeScreen *ms,
short *dat,int bx,int by,int h,int lng,int *buf);
void YSC_mazeDrawWalls(char *EGB_work,
struct mazeStyle *mz,struct mazeScreen *ms,int *buf);
/* printmap.c */
void YSC_dispOneWall(char *EGB_work,struct mazeStyle *mz,
int sx,int sy,short *dat,int bx,int by,int dir,int l);
void YSC_dispWalls(char *EGB_work,struct mazeStyle *mz,
int lx,int ly,short *dat,int x1,int y1,int x2,int y2,int l);
/* create.c */
void YSC_mazeCreate(struct mazeStyle *mz,short *mzdat);